home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / ivl / src / ivl_draw.c < prev    next >
Text File  |  2000-06-23  |  3KB  |  138 lines

  1. /*
  2. #define DEBUG
  3. *    ivl
  4. *
  5. *    表示関係処理
  6. *
  7. *    from Jun. 7,1999    by dummy.x.(with J-SAGA INDUSTRY)
  8. */
  9. #if    0
  10.  
  11. 注釈:
  12.     Jun. 7,1999 にこの処理を組み始めた時点では、私(dum.)は
  13.     .PT4 ファイルのデータフォーマットを知りません。
  14.  
  15.     ただ IV.S を参考に、「こんなんじゃないかな」「こういう感じなのかな」
  16.     と推測を交えつつ組んでいるだけです。
  17.  
  18.     っつーわけで、ご留意&ご注意を。
  19.  
  20. #endif
  21.  
  22. #include    <sys\iocs.h>
  23. #include    "comtype.h"
  24. #include    "easymac.h"
  25. #include    "sysconst.h"
  26. #define    GRPH_1024
  27. #define    GRPH_COLOR_16
  28. #include    "scrncom.h"
  29. #include    "dummyc.h"
  30. #include    "hufilec.h"
  31. #include    "libpt4.h"
  32. #include    "ivl.h"
  33.  
  34.  
  35. /*
  36. *    ↓↓↓ グラフィック表示 ↓↓↓
  37. */
  38. /* PT4 エラーメッセージをグラフィック画面に表示(12x12フォント)
  39. *    引数:    msgp    - エラーメッセージへのポインタ
  40. *        tx,ty    - 表示座標(基準値)
  41. */
  42. void symbol_pt4_error(const char *msgp, ushort tx, ushort ty)
  43. {
  44.     static struct _symbolptr symbuf = {
  45.         0, 0, NULL,                /* 可変(毎回変更される) */
  46.         1, 1, 11, SYMBOL_FONT_12, SYMBOL_ROLL_0    /* 固定 */
  47.     };
  48.  
  49.     /* 引数値をバッファに設定 */
  50.     symbuf.x1 = tx;
  51.     symbuf.y1 = ty;
  52.     symbuf.string_address = (char *)msgp;
  53.  
  54.     /* 文字列表示 */
  55.     _iocs_symbol(&symbuf);
  56. }
  57.  
  58. /* 文字列を6x12フォント/固定色でグラフィック画面に表示
  59. *    引数:    fnamp    - ファイル名へのポインタ
  60. *        tx,ty    - ファイル名表示座標(基準値)
  61. */
  62. void symbol_6x12(const char *strp, ushort tx, ushort ty)
  63. {
  64.     static struct _symbolptr symbuf = {
  65.         0, 0, NULL,                /* 可変部(毎回変更される) */
  66.         1, 1, 11, SYMBOL_FONT_6, SYMBOL_ROLL_0    /* 固定部 */
  67.     };
  68.  
  69.     /* 引数値をバッファに設定 */
  70.     symbuf.x1 = tx;
  71.     symbuf.y1 = ty;
  72.     symbuf.string_address = (char *)strp;
  73.  
  74.     /* 文字列表示 */
  75.     _iocs_symbol(&symbuf);
  76. }
  77.  
  78. /* グラフィック画面の矩形範囲を塗り潰す
  79. *    引数:    x,y    - 始点座標
  80. *        w,h    - 範囲横幅/縦高
  81. */
  82. void boxfill_in_area(short x, short y, short w, short h)
  83. {
  84.     static struct _fillptr filbuf = {
  85.         -1, -1, -1, -1,    /* 可変部(毎回変更される) */
  86.         0        /* 固定部 */
  87.     };
  88.  
  89.     /* 引数値をバッファに設定 */
  90.     filbuf.x1 = x;
  91.     filbuf.y1 = y;
  92.     filbuf.x2 = x + w - 1;
  93.     filbuf.y2 = y + h - 1;
  94.  
  95.     /* 描画 */
  96.     _iocs_fill(&filbuf);
  97. }
  98.  
  99.  
  100. /*
  101. *    ↓↓↓ テキスト表示 ↓↓↓
  102. */
  103. /* 操作ガイドラインに指定のメッセージを表示する
  104. *    引数:    mesp    - 表示メッセージへのポインタ
  105. *        col    - 表示色
  106. *        topno    - 現在値
  107. *        maxno    - 最大値
  108. *        sepch    - 現在値と最大値を区切る文字(最下位バイトのみ有効)
  109. */
  110. #define    NUMSTRLEN    (3 + 1 + 3)    /* "xxx/xxx" */
  111. void print_message_on_guideline(const char *strp, int col, int topno, int maxno, int sepch)
  112. {
  113.     char buf[NUMSTRLEN + 1];    /* +1 は最後の '\0' のぶん */
  114.  
  115.     /* ライン消去 */
  116.     _iocs_b_locate(0, 31);    /* 位置移動 */
  117.     _iocs_b_color(0);    /* 一旦透明にする */
  118.     _iocs_b_era_al();    /* ライン消去 */
  119.  
  120.     /* 操作ガイド */
  121.     _iocs_b_color(col);
  122.     _iocs_b_print(strp);
  123.  
  124.     /* 現在値/最大値 */
  125.     _iocs_b_color(3);
  126.     _iocs_b_locate((screen_width / 8) - (NUMSTRLEN + 1), 31);    /* +1 はカーソルのため */
  127.         /* 表示文字列作成 */
  128.     ltodecstr(buf, topno, 3, ' ');
  129.     buf[3] = sepch;
  130.     ltodecstr(buf + 4, maxno, 3, ' ');
  131.         /* 表示 */
  132.     _iocs_b_print(buf);
  133.  
  134.     _iocs_b_curoff();    /* カーソル消去 */
  135. }
  136. #undef    NUMSTRLEN
  137.  
  138.